package hello;

/**
 * Created with IntelliJIDEA.
 * Description:
 * User: ASUS
 * Date: 2025/9/11
 * Time: 21:21
 */

public class StringConstructionDemo {
    public static void main(String[] args) {
        // 1. 最常用的方式：使用字符串字面量
        // JVM 会检查字符串常量池，直接使用池中的对象
        String s1 = "Hello";
        System.out.println("s1: " + s1);

        // 2. 使用 new 关键字创建
        // 这会在堆内存中创建一个全新的 String 对象，即使常量池中已有 "Hello"
        String s2 = new String("Hello");
        System.out.println("s2: " + s2);

        // 3. 使用字符数组创建 String
        char[] charArray = {'J', 'a', 'v', 'a'};
        String s3 = new String(charArray);
        System.out.println("s3: " + s3);

        // 4. 使用字符数组的一部分创建 String
        // 参数：字符数组, 起始索引, 长度
        String s4 = new String(charArray, 1, 2); // 从索引1开始，取2个字符 'a', 'v'
        System.out.println("s4: " + s4);

        // 5. 使用字节数组创建 String (可能涉及字符编码)
        byte[] byteArray = {97, 98, 99}; // 97, 98, 99 分别是 'a', 'b', 'c' 的 ASCII 码
        String s5 = new String(byteArray); // 使用平台默认的字符集解码
        System.out.println("s5: " + s5);

        // 6. 创建一个空的字符串
        String s6 = new String();
        System.out.println("s6 (空字符串): " + s6);
    }
}
